package gest;

import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.sql.Connection;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Scanner;

public class Estat_Medi {
	static Registry re;
	static Gestao g;
	static Scanner sca = new Scanner(System.in);
	static Connection conn;

	public Estat_Medi(String nome) {
		String mn = nome;
		String qu=null;
		qu="select Farmacias.nome from Medicamentos, Farmacias, Receitas " +
				"where Receitas.idfarm=Farmacias.idfarm and" +
				" Receitas.idMedi=Medicamentos.idMedi and Medicamentos.nome='"+mn+
				"' group by Receitas.idfarm " +
				" order by count(Receitas.idfarm) desc limit 3";
//		System.out.println(qu);
		java.sql.ResultSet rs = querry(qu);
		System.out.println("As farmacias que mais vendem o medicamento"+mn+"sao:\n");
		try {
			rs.first();
			System.out.println(rs.getString(1));
			rs.next();
			System.out.println(rs.getString(1));
			rs.next();
			System.out.println(rs.getString(1));
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public Estat_Medi(){
		String qu = "select Medicamentos.nome from Receitas, Medicamentos" +
				" where Receitas.idmedi=Medicamentos.idmedi" +
				" group by Receitas.idmedi" +
				" order by count(Receitas.idmedi) desc limit 3";
//		System.out.println(qu);
		java.sql.ResultSet rs = querry(qu);
		System.out.println("Os medicamentos mais vendidos sao:\n");
		try {
			rs.first();
			System.out.println(rs.getString(1));
			rs.next();
			System.out.println(rs.getString(1));
			rs.next();
			System.out.println(rs.getString(1));
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		if (args[0].equals("-i")) {
		try {
			re = LocateRegistry.getRegistry();
			g = (Gestao) re.lookup("GestaoReceitas");
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
		g = new Gestao_Impl();
		selecciona();
		}else if (args[0].equals("-mv")) {
			new Estat_Medi();
		} else if (args[0].equals("-fm")){
			new Estat_Medi(args[1]);
		} else System.out.println("Opcao invalida");
	}
	
	public static void selecciona() {
		System.out.println("Escolha o tipo de procura pretendido:\n" +
				"1- Quais os medicamentos mais vendidos\n" +
				"2- Farmacia que vende mais o medicamento\n" +
				"3- Sair\n");
		int x = Integer.parseInt(sca.nextLine());
		switch(x){
		case 1:
			mais_vendido();
			break;
		case 2:
			farm_medi();
			break;
		case 3:
			System.exit(0);
			break;
			default:
				System.out.println("Opccao invalida!!!");
				selecciona();
				break;
		}
		

	}
	
	public static java.sql.ResultSet querry(String q){
		if (conn==null)
			conn = DBConnection.get_conn();
		java.sql.Statement st;
		java.sql.ResultSet rs=null;
			try {
				st = conn.createStatement();
				rs = st.executeQuery(q);
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return rs;
	}
	
	public static void mais_vendido(){
		String qu = "select Medicamentos.nome from Receitas, Medicamentos" +
				" where Receitas.idmedi=Medicamentos.idmedi" +
				" group by Receitas.idmedi" +
				" order by count(Receitas.idmedi) desc limit 3";
//		System.out.println(qu);
		java.sql.ResultSet rs = querry(qu);
		System.out.println("Os medicamentos mais vendidos sao:\n");
		try {
			rs.first();
			System.out.println(rs.getString(1));
			rs.next();
			System.out.println(rs.getString(1));
			rs.next();
			System.out.println(rs.getString(1));
		} catch (SQLException e) {
			e.printStackTrace();
		}
		System.out.println("Deseja fazer outra pesquisa?\n" +
				"1-Sim\n" +
				"2-Nao\n");
		int res = Integer.parseInt(sca.nextLine());
		switch(res){
		case 1:
			selecciona();
			break;
		case 2:
			System.exit(0);
			break;
		}
	}
	
	public static void farm_medi(){
		System.out.println("Insira o nome do medicamento pretendido");
		String mn = sca.nextLine();
		String qu=null;
		qu="select Farmacias.nome from Medicamentos, Farmacias, Receitas " +
				"where Receitas.idfarm=Farmacias.idfarm and" +
				" Receitas.idMedi=Medicamentos.idMedi and Medicamentos.nome='"+mn+
				"' group by Receitas.idfarm " +
				" order by count(Receitas.idfarm) desc limit 3";
//		System.out.println(qu);
		java.sql.ResultSet rs = querry(qu);
		System.out.println("As farmacias que mais vendem o medicamento"+mn+"sao:\n");
		try {
			rs.first();
			System.out.println(rs.getString(1));
			rs.next();
			System.out.println(rs.getString(1));
			rs.next();
			System.out.println(rs.getString(1));
		} catch (SQLException e) {
			e.printStackTrace();
		}
		System.out.println("Deseja fazer outra pesquisa?\n" +
				"1-Sim\n" +
				"2-Nao\n");
		int res = Integer.parseInt(sca.nextLine());
		switch(res){
		case 1:
			selecciona();
			break;
		case 2:
			System.exit(0);
			break;
		}
	}
	

}
